Przykad A.4. Skrypt compare.sh testu porwnawczego
#!/bin/bash
#
#  Ten skrypt wymaga DWCH argumentw:
#     $1  rozmiar problemu n
#     $2  liczba prb do wykonania
#  Ten skrypt czyta parametry z pliku konfiguracyjnego $CONFIG
#     BINS    zbir plikw wykonywalnych do wykonania
#     EXTRAS  dodatkowe argumenty polecenia, uywane podczas ich wykonywania
#
# CODE okrela katalog ulokowania tych skryptw
CODE=`dirname $0`

SIZE=20
NUM_TRIALS=10
if [ $# -ge 1 ]
then
   SIZE=$1
   NUM_TRIALS=$2
fi

if [ "x$CONFIG" = "x" ]
then
   echo "Nie zdefiniowano pliku konfiguracyjnego (\$CONFIG)"
   exit 1
fi

if [ "x$BINS" = "x" ]
then
   if [ -f $CONFIG ]
   then
      BINS=`grep "BINS=" $CONFIG | cut -f2- -d'='`
    EXTRAS=`grep "EXTRAS=" $CONFIG | cut -f2- -d'='`
   fi

   if [ "x$BINS" = "x" ]
   then
      echo "Brak zmiennej \$BINS i konfiguracji $CONFIG"
      echo "Podaj w \$BINS" zbir plikw wykonywalnych oddzielonych spacjami
   fi
fi

echo "Raport: #BINS rozmiaru $SIZE"
echo "Data: `date`"
echo "Komputer: `hostname`"
RESULTS=/tmp/compare.$$
for b in $BINS
do
   TRIALS=$NUM_TRIALS

   # Zacznij od liczby prb, potem podaj sumy (po jednej w wierszu)
   echo $NUM_TRIALS > $RESULTS
   while [ $TRIALS -ge 1 ]
   do
      $b -n $SIZE -s $TRIALS $EXTRAS | grep secs | sed 's/secs//' >> $RESULTS
      TRIALS=$((TRIALS-1))
   done

   # Oblicz redni i odchyl.std.
   RES=`cat $RESULTS | $CODE/eval`
   echo "$b $RES"

   rm -f $RESULTS
done
